/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Adkiraki;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import javax.faces.context.FacesContext;
import javax.faces.application.FacesMessage;
import java.util.ResourceBundle;
import javax.jdo.PersistenceManager;
import javax.servlet.http.HttpSession;


/**
 *
 * @author Ferrir
 */
public class LoginBean {

    private String login;
    private String senha;

    // Construtor
    public LoginBean() {
        login = "";
        senha = "";
    }

    public String Login() {

        FacesContext context = FacesContext.getCurrentInstance();
        ResourceBundle bundle =
                ResourceBundle.getBundle("Adkiraki.mensagens",
                    context.getViewRoot().getLocale());

        String msg = "";
        
        Date data = new Date();
        SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yyyy");
        formatador.format(data);

        // Cria o usuário ADMIN caso não exista
        String query = "select from " + Usuario.class.getName() + " where login == 'ADMIN'";

        PersistenceManager pm = PMF.get().getPersistenceManager();

        List<Usuario> lUsuarioAdm = (List<Usuario>) pm.newQuery(query).execute();

        if (lUsuarioAdm.size() == 0){
            Usuario usuarioAdm = new Usuario("Adiministrador", "ADMIN", "123456", "ferreira.alexandre@gmail.com", true, "11111111111", data, 0);
            pm.makePersistent(usuarioAdm);
        }

        // Testa o Login
        query = "select from " + Usuario.class.getName() + " where login == '" + this.login + "' && senha == '" + this.senha + "'";
        List<Usuario> lUsuarioLogin = (List<Usuario>) pm.newQuery(query).execute();

        if (lUsuarioLogin.size() == 0){

            msg = bundle.getString("login_fail");
            context.addMessage (null, new FacesMessage(msg));
            pm.close();
            return "logarnovamente";

        } else {
            HttpSession session = (HttpSession) context.getExternalContext().getSession(true);            
            session.setAttribute(Usuario.class.getName(), lUsuarioLogin.get(0));            
            pm.close();
            return "sucesso";
        }
    }

    public String Logout() {
        FacesContext context = FacesContext.getCurrentInstance();
        HttpSession session = (HttpSession) context.getExternalContext().getSession(true);
        session.setAttribute(Usuario.class.getName(), null);
        session.invalidate();        
        return "logarnovamente";
    }

    // Este metodo invalida a sessao corrente
    public String LogarNovamente () {
        FacesContext context = FacesContext.getCurrentInstance();
        HttpSession session = (HttpSession) context.getExternalContext().getSession(true);
        session.setAttribute(Usuario.class.getName(), null);
        session.invalidate();
        return "logarnovamente";
    }

    /**
     * @return the login
     */
    public String getLogin() {        
        return login;
    }

    /**
     * @param login the login to set
     */
    public void setLogin(String login) {
        this.login = login;
    }

    /**
     * @return the senha
     */
    public String getSenha() {
        return senha;
    }

    /**
     * @param senha the senha to set
     */
    public void setSenha(String senha) {
        this.senha = senha;
    }
}
